home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 February / EnigmA AMIGA RUN 04 (1996)(G.R. Edizioni)(IT)[!][issue 1996-02][Skylink CD III].iso / earcd / faq / amil1138.lha / AMIL / AMIL_Search.rexx next >
OS/2 REXX Batch file  |  1992-09-02  |  5KB  |  226 lines

  1. /*
  2. **---------------------------------------
  3. ** 
  4. ** AMIL_Search.rexx V0.3
  5. **
  6. ** Search AMIL.guide for keywords
  7. **
  8. ** © 1995 Tassos Hadjithomaoglou
  9. **
  10. **----------------------------------------
  11. ** $VER: AMIL_Search.rexx V0.3 (20-Nov-95)
  12. **----------------------------------------
  13. **
  14. ** History
  15. **
  16. **  0.1 First release.
  17. **  0.3 Added searching in the current directory first and then in AMIL:.
  18. **      That way the AMIL: assign is optional.
  19. **      The search can be aborted anytime by pressing Control+C.
  20. **
  21. **-----------------------------------------------------------------------
  22. */
  23.  
  24. /*
  25. ** Path for Viewer
  26. **
  27. ** Enter here the full path of an AmigaGuide Viewer of your choice
  28. ** That's the only thing you should change
  29. */
  30.  
  31. Viewer = 'SYS:Utilities/MultiView'
  32.  
  33. /*
  34. ** Please don't change anything after this line
  35. **----------------------------------------------
  36. */
  37.  
  38. OPTIONS RESULTS
  39.  
  40. SIGNAL ON BREAK_C
  41. SIGNAL ON SYNTAX
  42.  
  43. TRUE=1
  44. FALSE=0
  45.  
  46. /*
  47. ** Check for AMIL.guide first in current directory and then in AMIL:
  48. ** If AMIL.guide is found then open it, else inform the user
  49. */
  50.  
  51. bool1=OPEN(AMIL_file,'AMIL.guide',R)
  52.  
  53. IF bool1 = FALSE THEN
  54. DO
  55.    SAY '"AMIL.guide" wasn''t found in the current directory.'
  56.  
  57.     bool1=OPEN(AMIL_file,'AMIL:AMIL.guide',R)
  58.  
  59.     IF bool1 = FALSE THEN
  60.     DO
  61.        SAY '"AMIL.guide" wasn''t found in AMIL: either.'
  62.        SAY 'Please CD to the directory of AMIL.guide or'
  63.       SAY 'set your AMIL: assign correctly and try again!!!'
  64.        EXIT
  65.     END
  66.    ELSE
  67.    DO
  68.         AMIL_Path = 'AMIL:AMIL.guide'
  69.    END
  70. END
  71. ELSE
  72. DO
  73.     AMIL_Path = PRAGMA('D')
  74.     IF INDEX(AMIL_Path,':') = LENGTH(AMIL_Path) THEN
  75.         AMIL_Path = AMIL_Path'AMIL.guide'
  76.     ELSE
  77.         AMIL_Path = AMIL_Path'/AMIL.guide'
  78. END
  79.  
  80. /*
  81. ** Check for argument, else ask for one
  82. */
  83.  
  84. PARSE ARG Keyword
  85.  
  86. IF Keyword = '' THEN
  87. DO
  88.    SAY 'Please input word to search for : '
  89.    PARSE PULL Keyword
  90.    IF Keyword = '' THEN
  91.    DO
  92.       SAY 'Search abandoned !!!'
  93.       EXIT 0
  94.    END
  95. END
  96.  
  97. SAY 'Searching for "'Keyword'"...'
  98.  
  99. /*
  100. ** Initialize variables
  101. */
  102.  
  103. Counter = 0
  104. Node_Line = 0
  105. Keyword_Line = 0
  106. Node_Name = ''
  107. AMIL_Line = ''
  108.  
  109. /*
  110. ** Create the AMIL_Search.guide
  111. */
  112.  
  113. bool1=OPEN(Search_file,'T:AMIL_Search.guide',W)
  114.  
  115. WRITELN(Search_file,'@database AMIL_Search')
  116. WRITELN(Search_file,'@node "Main" "AMIL_Search"')
  117. WRITELN(Search_file,'')
  118. WRITELN(Search_file,' The word "@{b}'Keyword'@{ub}" was found in the following nodes :')
  119. WRITELN(Search_file,'')
  120.  
  121. DO UNTIL EOF(AMIL_file) = TRUE
  122.    AMIL_Line = READLN(AMIL_file)
  123.    Counter = Counter + 1
  124.  
  125.    IF LEFT(AMIL_Line,5) = '@node' THEN
  126.    DO
  127.       s1 = DELSTR(AMIL_Line,1,7)
  128.       Node_Name = DELSTR(s1,INDEX((s1),'"'))
  129.       Node_Line = Counter
  130.    END
  131.  
  132.    IF (LEFT(AMIL_Line,1) ~= '@') | (LEFT(AMIL_Line,2) = '@{') THEN
  133.    DO
  134.       IF INDEX(UPPER(AMIL_Line),UPPER(Keyword)) ~= 0 THEN 
  135.       DO
  136.          Keyword_Line = Counter - Node_Line - 2
  137.          AMIL_Search_Line = ' @{"'Node_Name'" link "'AMIL_Path'/'Node_Name'" 'Keyword_Line'}'
  138. /*
  139. **-------------
  140. ** example link 
  141. **----------------------------
  142. ** @{"Author" link "Author" 0}
  143. **----------------------------
  144. */
  145.          WRITELN(Search_file,AMIL_Search_Line)
  146.          WRITELN(Search_file,'   'AMIL_Line)
  147.          WRITELN(Search_file,COPIES('-',75))
  148.       END
  149.    END
  150. END
  151.  
  152. WRITELN(Search_file,'')
  153. WRITELN(Search_file,'@endnode')
  154.  
  155. /*
  156. ** Close both files
  157. */
  158.  
  159. bool1=CLOSE(AMIL_file)
  160. bool1=CLOSE(Search_file)
  161.  
  162. /*
  163. ** Check for Viewer or MultiView/AmigaGuide
  164. */
  165.  
  166. bool1 = EXISTS(Viewer)
  167. IF bool1 = FALSE THEN
  168. DO
  169.    SAY Viewer 'wasn''t found.'
  170.    SAY 'Trying MultiView/AmigaGuide...'
  171.    bool1 = EXISTS('SYS:Utilities/MultiView')
  172.    IF bool1 = FALSE THEN
  173.    DO
  174.       bool1 = EXISTS('SYS:Utilities/AmigaGuide')
  175.       IF bool1 = FALSE THEN
  176.       DO
  177.          SAY 'MultiView/AmigaGuide weren''t found in SYS:Utilities !!!'
  178.          EXIT
  179.       END
  180.       ELSE
  181.       DO
  182.          Viewer = 'SYS:Utilities/AmigaGuide'
  183.       END
  184.    END
  185.    ELSE
  186.    DO
  187.       Viewer = 'SYS:Utilities/MultiView'
  188.    END
  189. END
  190.  
  191. /*
  192. ** View the results from the search
  193. */
  194.  
  195. SAY 'Running 'Viewer'...'
  196. ADDRESS COMMAND 'Run >NIL: <NIL:' Viewer 'T:AMIL_Search.guide'
  197.  
  198. EXIT 0
  199.  
  200. /*
  201. ** End of ARexx script
  202. */
  203.  
  204. /*
  205. ** Handle the Error condition
  206. */
  207.  
  208. SYNTAX:
  209.     bool1=CLOSE(AMIL_file)
  210.     bool1=CLOSE(Search_file)
  211.     ADDRESS COMMAND 'Delete T:AMIL_Search.guide QUIET'
  212.     SAY 'Error at line' SIGL ':' ERRORTEXT(RC)
  213.     SAY 'Please report it to the author'
  214.     EXIT
  215.  
  216. /*
  217. ** Handle the Control C command given by the user
  218. */
  219.  
  220. BREAK_C:
  221.     bool1=CLOSE(AMIL_file)
  222.     bool1=CLOSE(Search_file)
  223.     ADDRESS COMMAND 'Delete T:AMIL_Search.guide QUIET'
  224.     SAY 'Search aborted...'
  225.     EXIT
  226.